import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.*;

/**
 * Write a description of class Mosquito here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Mosquito extends Actor
{
    public GreenfootSound bss;
    public GreenfootSound wow;
    private static GreenfootImage frame[];  
    public int cont = 0,cont2=0,cont3=0,chupando=0;
    private Label vida,sangre;
    public int vidas,contpicados,desaparecido;
    public float sangreRec,contsangre=0;
    public mano mano=new mano();
    public persona per;
    public humo humo;
    public roncha roncha= new roncha();
    public roncha roncha2 = new roncha();
    public roncha roncha3 = new roncha();
    public roncha roncha4 = new roncha();
    
    Actor persona;
    World mundo = getWorld();
    MundoMosco mundomosco;
    
    public Mosquito(MundoMosco mund)
    {
        mundomosco=mund;
        
        desaparecido=0;
        bss = new GreenfootSound("mosco.wav");
        bss.setVolume(30);
        wow= new GreenfootSound("ohyeah.wav");
        wow.setVolume(80);
        frame = new GreenfootImage [7];
        int i = 0;
         
        for(int a = 0;a < 5; a++)
        {       
            frame[a] = new GreenfootImage("mos"+ i + ".png");
            i++;
        }
        
    }
    
    /**
     * Act - do whatever the Mosquito wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act() 
    {
       
        moverGirar();
        if(desaparecido==0)
        {
          vida.setText("Vida: "+vidas);
          sangre.setText("Sangre: "+contsangre);
          cambiaImagen();
        }
        else
         desaparece();
        chuparSangre();
       // sigueLampara();
        if(humo!=null)
        humo.mueve();
        
    }   
    public void obtenPersona(persona p1)
    {
        per=p1;
    }
     public void obtenHumo(humo h1)
    {
       humo=h1;
    }
    public void addedToWorld(World world)
    {
        sangreRec=0;
        vidas=100;
        if(desaparecido==0){
        vida=new Label("Vida: "+vidas);
        sangre=new Label("Sangre: "+contsangre);
        
        getWorld().addObject(vida,10,35);
        getWorld().addObject(sangre,10,65); 
        }
    }
   
      public void cambiaImagen()
    {
        setImage(frame[cont]);        
        if(cont == 4)
            cont = 0;
        else
            cont++;
    }
     
    
    public void moverGirar()
    {
        
         //super.move(2);
        if(Greenfoot.isKeyDown("left"))
        {
           super.setLocation( this.getX()-30,this.getY());
           
        }
        else
         if(Greenfoot.isKeyDown("right"))
         {
            super.setLocation( this.getX()+30,this.getY());
          
        }
         else
          if(Greenfoot.isKeyDown("up"))
          {
              super.setLocation( this.getX(),this.getY()-30);
              
          }
          else
           if(Greenfoot.isKeyDown("down"))
           {
              super.setLocation( this.getX(),this.getY()+30);
             
           }
         
    }
     public void chuparSangre()
    {
        Actor m,persona;        
        World mundo = getWorld();
        persona=getOneIntersectingObject(persona.class);
            if(persona!=null)
            {
                bss.stop();
               wow.play();
               if(Greenfoot.isKeyDown("x"))
                {
                 Greenfoot.playSound("eating.wav");
                 recolectaSangre();
                 cont2++;
                }
                if(mundomosco.nivel==1)
                {
                  if(cont2==2)
                  {
                    mundo.addObject(mano,this.getX(),this.getY());
                   
                     reduceVida();
                    
                  }
                }
                else
                if(mundomosco.nivel==2)
                {
                  if(cont2==3)
                  {
                    mundo.addObject(mano,this.getX(),this.getY());
                    
                     reduceVida();
                    cont=0;
                  }
                }
                else
                if(mundomosco.nivel==3)
                {
                  if(cont2==4)
                  {
                    mundo.addObject(mano,this.getX(),this.getY());
                    
                     reduceVida();
                    cont=0;
                  }
                }
                  m=getOneIntersectingObject(mano.class);
                 if(m!=null)
                 {
                  
                  reduceVida();
                 }
            }
            else{
                if(desaparecido==0){
                 per.picado=0;
                 mundo.removeObject(mano);
                 wow.stop();
                 bss.play();  
                 cont2=0;
                 muerto();}
                 
                }
            
            if(mundomosco.nivel==1)
            {
              if(sangreRec==36)
              { 
                  per.picado=1;
                  sangreRec=0;
              }
            }
            else
             if(mundomosco.nivel==2)
             {
              if(sangreRec==32)
               { 
                  per.picado=1;
                  sangreRec=0;
               }
             }
              else
              if(mundomosco.nivel==3)
                if(sangreRec==25)
                { 
                  per.picado=1;
                  sangreRec=0;
                }
            
             if(per.picado==1)
             {
               contpicados++;
               //per.picado=0;
               if(contpicados==1){
               mundo.removeObject(mano);
               mundo.removeObject(persona);
               mundo.addObject(roncha,this.getX(),this.getY());
               }
               else
               if(contpicados==2)
               { mundo.removeObject(mano);
               mundo.removeObject(persona);
               mundo.addObject(roncha2,this.getX(),this.getY());}
               else
               if(contpicados==3)
               { mundo.removeObject(mano);
               mundo.removeObject(persona);
               mundo.addObject(roncha3,this.getX(),this.getY());}
               else
               if(contpicados==4)
               { mundo.removeObject(mano);
               mundo.removeObject(persona);}
               //mundo.addObject(roncha4,this.getX(),this.getY());}
             }  
             if(contsangre>=99)
             {
                mundomosco.checagano(this);
            }
             
    }
    public void reduceVida()
    { 
        
           if(mundomosco.nivel==1)
             vidas--;
           else
           if(mundomosco.nivel==2)
            vidas-=2;
            else
            if(mundomosco.nivel==3)
            vidas-=3;
            muerto();
            
    }
    
    public void muerto()
    {
        World mundo = getWorld();
        int trans;
        if(vidas<=0)
        {
          desaparecido=1;
          bss.stop();
          Greenfoot.playSound("grito.mp3");
          mundomosco.perdiste();
        }
    }
    public void recolectaSangre()
    {   
        if(mundomosco.nivel==1)
        {
           sangreRec+=6;
           if(sangreRec==36)
             contsangre+=sangreRec;
        }
        else 
        if(mundomosco.nivel==2)
        {
            sangreRec+=4;
            if(sangreRec==32)
              contsangre+=sangreRec+2;
        }
        else
        if(mundomosco.nivel==3)
        {
            sangreRec+=2.5;
            if(sangreRec==25)
              contsangre+=sangreRec;
        }
    }
    
    public void desaparece()
    {
        setImage(frame[6]);
    }
    
}
